class Solution {
public:
    string countAndSay(int n) {
        // string ret = "1";
        // string ans;
        // for (int i = 1; i < n; i++) {
        //     int left = 0, right = 0;
        //     while (right < ret.size()) {
        //         if (ret[right] != ret[left]) {
        //             int des = right - left;
        //             ans += to_string(des);
        //             ans += ret[left];
        //             left = right;
        //         }
        //         right++;
        //     }
        //     ret = ans;
        // }
        // return ret;
        string ret = "1";

        for (int i = 1; i < n; ++i) {
            string ans;
            int left = 0, right = 0;

            while (right < ret.size()) {
                if (ret[right] != ret[left]) {
                    ans += to_string(right - left); // 数量
                    ans += ret[left];               // 字符
                    left = right;
                }
                right++;
            }

            // ❗❗ 处理最后一组字符
            ans += to_string(right - left);
            ans += ret[left];

            ret = ans;
        }

        return ret;
    }
};
